import java.util.Scanner;

public class SekizMeyve
{
	private byte sayi, kontrol;
	private String meyve[] = new String[8];
	private Scanner giris = new Scanner(System.in);
	
	public SekizMeyve()
	{
		kontrol = 1;
		sayi = 0;
		meyve[0] = "Ayva";
		meyve[1] = "Erik";
		meyve[2] = "Portakal";
		meyve[3] = "Muz";
		meyve[4] = "Kivi";
		meyve[5] = "Armut";
		meyve[6] = "Elma";
		meyve[7] = "Ananas";

	}
	
	public void meyveEkle()
	{
		byte islem = 0;
		do
		{
			System.out.println("Asagidaki listeye gore secim yapiniz: ");
			System.out.println("Ayva eklemek icin\t\t\t" +			"1");
			System.out.println("Erik eklemek icin\t\t\t" +       	"2");
			System.out.println("Portakal eklemek icin\t\t\t" +   	"3");
			System.out.println("Muz eklemek icin\t\t\t" +        	"4");
			System.out.println("Kivi eklemek icin\t\t\t" + 			"5");
			System.out.println("Armut eklemek icin\t\t\t" +			"6");
			System.out.println("Elma eklemek icin\t\t\t" + 			"7");
			System.out.println("Ananas eklemek icin\t\t\t" +		"8 giriniz.");
			System.out.print("Seciminiz: ");
			
			islem = Byte.parseByte((giris.next().trim()));
		}while(!(islem <= 8 && islem > 0));

		sayi = (byte)(((byte)(kontrol << (islem - 1))) | sayi);			
	}
	
	public void meyveCikar()
	{
		byte islem = 0;
		do
		{
			System.out.println("Asagidaki listeye gore secim yapiniz: ");
			System.out.println("Ayva cikarmak icin\t\t\t" +			"1");
			System.out.println("Erik cikarmak icin\t\t\t" +      	"2");
			System.out.println("Portakal cikarmak icin\t\t\t" +  	"3");
			System.out.println("Muz cikarmak icin\t\t\t" +       	"4");
			System.out.println("Kivi cikarmak icin\t\t\t" + 		"5");
			System.out.println("Armut cikarmak icin\t\t\t" +		"6");
			System.out.println("Elma cikarmak icin\t\t\t" + 		"7");
			System.out.println("Ananas cikarmak icin\t\t\t" +		"8 giriniz.");
			System.out.print("Seciminiz: ");
			
			islem = Byte.parseByte((giris.next().trim()));
		}while(!(islem <= 8 && islem > 0));

		sayi = (byte)(~((byte)(kontrol << (islem - 1))) & sayi);
	}
	
	public byte meyveSayisi()
	{
		byte sayac = 0;
		for(byte i = 0; i < 8; i++)
		{
			if((((byte)(kontrol << i)) & sayi) == ((byte)(kontrol << i)))
				sayac++;
		}
		return sayac;
	}
	
	public void meyveListesi()
	{		
		System.out.print("Secilen meyveler:");
		for(byte i = 0; i < 8; i++)
		{
			if((((byte)(kontrol << i)) & sayi) == ((byte)(kontrol << i)))
				System.out.print(meyve[i] + ", ");
		}
		System.out.println("\b\b'dir.");
	}
	
	public void meyveSayisiYaz()
	{
		System.out.println("Su ana kadar eklenen meyve sayisi: " + this.meyveSayisi());
	}
	
	public void menu()
	{
		byte islem = 0;
		boolean tekrar = true;

		do
		{
			System.out.println("Asagidaki listeye gore secim yapiniz: ");
			System.out.println("Meyve eklemek icin\t\t\t" +						"1");
			System.out.println("Meyve cikarmak icin\t\t\t" +     			 	"2");
			System.out.println("Meyve sayisi icin\t\t\t" +  					"3");
			System.out.println("Secilen meyvelerin listesi icin\t\t" +			"4");
			System.out.println("Cikis yapmak icin\t\t\t" +						"9 giriniz.");
			System.out.print("Seciminiz: ");

			islem = Byte.parseByte((giris.next().trim()));
			
			switch(islem)
			{
			case 1:
				this.meyveEkle();
				break;
	
			case 2:
				this.meyveCikar();
				break;
			
			case 3:
				this.meyveSayisiYaz();
				break;
			
			case 4:
				this.meyveListesi();
				break;
			
			case 9:
				tekrar = false;
				break;
			
			default:
				System.out.println("Giris hatali, tekrar deneyin.");
				break;
			}
			System.out.println();
		}while(tekrar);		
	}
	
	
	public static void main(String[] args)
	{
		SekizMeyve deneme = new SekizMeyve();
		deneme.menu();
	}
}
